package com.open.capacity.controller;

import com.open.capacity.common.web.Result;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FilenameUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.util.UUID;

/**
 * @author: y_022
 * @date: 18:07-2021/7/6
 * @description:
 */
@RestController
@Slf4j
@RequestMapping("/upload")
public class UpLoadController {
    @Autowired
    private UserController userController;
    @PostMapping( "/up")
    @ResponseBody
    public Result upload(MultipartFile file) throws Exception{
        // 获取上传的 文件名  如 : 美女.png
        String realPath = "C:\\Users\\y022\\Desktop\\open-capacity-platform\\ZBestPC\\img";
        String originalFilename = file.getOriginalFilename();
        // 使用 common-io 中的FilenameUtils获取  png后缀
        String extension = FilenameUtils.getExtension(originalFilename); // png
        // 生成一个随机的 几乎永不重复的 32位随机字符串
        String uuid = UUID.randomUUID().toString().replace("-", "");
        // 拼接 新的文件名 准备写入硬盘的
        String newName = uuid + "." + extension;

        // 你们写代码 这里应该直接获取  target目录的地址 然后替换掉 aaaaaaa这个父路径
        // 目标新文件  /aaaaaaa/akgjalkghkfdshkglhkngkjefkgrlkslgk.pn
        File destFile = new File(realPath, newName);

        if (!destFile.getParentFile().exists()) {
            // 如果 准备存入的地方 父文件夹不存在  则创建父文件夹(可以创建多层级,爷爷级别不存在也可以创建)
            destFile.getParentFile().mkdirs();
        }

        // 将上传的文件,写入硬盘.
        file.transferTo(destFile);//将原文件转入到新生成的空白文件中，位置是web下的img
        String url ="img/"+newName;
        System.out.println(url);
        return Result.succeed(url,"操作成功！");
    }

//    private static File copy(MultipartFile file, String desOutFile, String newName) throws IOException {
//        File newFile = new File(desOutFile, newName);
//        //将传入的MultipartFile类型的文件转化为File类型，并写入目标位置的空白文件
//        FileUtils.copyInputStreamToFile(file.getInputStream(),newFile);
//        return newFile;
//    }
}
